home *** CD-ROM | disk | FTP | other *** search
- 1000 REM ***
- 1010 REM *** ULTRABOOT MENUE MAKER ***
- 1020 REM *** 1992 MARTIN PFOST
- 1030 REM *** (C) 1992 HEUREKA SOFTWARE
- 1040 REM ***
- 1050 POKE 53280,14:POKE 53281,14
- 1060 POKE 56,49:POKE 55,255:CLR
- 1070 PRINT "[147] *** [213]LTRABOOT [205]ENUE [205]AKER ***"
- 1080 PRINT "* 1992 [205]ARTIN [208]FOST"
- 1090 PRINT "* (C) 1992 [200]EUREKA [212]EACHWARE"
- 1100 PRINT " *** MAXIMALE [194]LOCKANZAHL : 104"
- 1110 PRINT "[213]LTRABOOT [205]ENUE [205]AKER ERSTELLT AUF"
- 1120 PRINT "[196]ISKETTE EIN [198]ILE, DAS MIT DEM MODIFI-"
- 1130 PRINT "ZIERTEN [213]LTRABOOT [205]AKER AUF DIE [218]IEL-"
- 1140 PRINT "DISKETTE ZU SCHREIBEN IST ."
- 1150 PRINT " *** [196]IE [204]OAD,[211]AVE,[196]IR-[210]OUTINEN WERDEN"
- 1160 PRINT " GELESEN ."
- 1170 C=0:FOR I=52992 TO 53109:READ D:POKE I,D:C=C+D:NEXT:IF C=18731 THEN 1190
- 1180 PRINT "??? [198]EHLER IN [196]ATA-[218]EILEN !":STOP
- 1190 PRINT " *** [196]IE [213]LTRABOOT-[205]ENUE-[196]ATEN WERDEN"
- 1200 PRINT " GELESEN ."
- 1210 C=0:FOR I=12800 TO 13506:READ D:POKE I,D:C=C+D:NEXT:IF C<>70818 THEN 1180
- 1220 REM *** EINGABE DER FILENAMEN
- 1230 CLR:AD=13507:DIM M%(5,20),ZT%(9,9),SB(9),SA%(9,9),N$(9)
- 1240 PRINT "[147] *** [199]EBEN [211]IE JETZT DIE ENTSPRECHEN-"
- 1250 PRINT " [198]ILES EIN ! ($=[196]IR. [210]ET=[197]NDE)"
- 1260 PRINT "==> [198]ILENAME [206]R.";FZ+1;" ";:A$="":INPUT A$
- 1270 IF A$="$" THEN OPEN 1,8,0,A$:SYS 52992:CLOSE 1:GOSUB2730:GOTO 1240
- 1280 IF A$="" AND FZ=0 THEN END
- 1290 IF A$="" THEN 1320
- 1300 FZ=FZ+1:N$(FZ)=A$:IF FZ<9 THEN 1260
- 1310 REM *** KONTROLLE DER FILENAMEN
- 1320 PRINT "[147]":GOSUB 2700
- 1330 INPUT "==> [207]K (J/N) ";A$:IF A$<>"J" THEN 1230
- 1340 PRINT "[147] *** [199]EBEN [211]IE JETZT EIN, WIE DIE [198]ILES"
- 1350 PRINT " GESTARTET WERDEN ."
- 1360 PRINT " S : [211]YS"
- 1370 PRINT " R : [210]UN"
- 1380 PRINT " T : [212]OOL-[198]ILE"
- 1390 FOR I=1 TO FZ
- 1400 PRINT "[198]ILE";I;" : ";N$(I):INPUT "==> [211]TARTBEFEHL (S/R/T) ";A$
- 1410 SB(I)=680:IF A$="S" THEN INPUT "==> [193]DRESSE ";SB(I)
- 1420 IF A$="T" THEN SB(I)=168
- 1430 NEXT I
- 1440 PRINT "[147]":FOR I=1 TO FZ
- 1450 PRINT "[198]ILE";I;" : ";N$(I);TAB(28);
- 1460 IF SB(I)=680 THEN PRINT "[210]UN":GOTO 1490
- 1470 IF SB(I)=168 THEN PRINT "[212]OOL-[198]ILE":GOTO 1490
- 1480 PRINT "[211]YS";SB(I)
- 1490 NEXT I
- 1500 INPUT "==> [207]K (J/N) ";A$:IF A$<>"J" THEN 1340
- 1510 REM *** EINGABE DER SAETZE
- 1520 SZ=0
- 1530 PRINT "[147] *** [199]EBEN [211]IE JETZT EIN, WELCHES [198]ILE"
- 1540 PRINT " ENTHALTEN SEIN SOLL ! ([210]ET=[197]NDE)"
- 1550 PRINT " [211]ATZ :";SZ+1;"":GOSUB 2700:I=0
- 1560 PRINT "==>";I+1;". [206]UMMER ";:A$="":INPUT A$
- 1570 IF A$="" THEN 1600
- 1580 IF VAL(A$)=0 OR VAL(A$)>FZ THEN PRINT "[145]";:GOTO 1560
- 1590 I=I+1:ZT%(SZ+1,I)=VAL(A$):IF I<9 THEN 1560
- 1600 INPUT "==> [207]K (J/N) ";A$:IF A$<>"J" THEN 1530
- 1610 ZT%(SZ+1,0)=I:IF I<>0 THEN SZ=SZ+1:IF SZ<9 THEN 1530
- 1620 REM *** AUTOSTARTABFRAGE
- 1630 I=1
- 1640 IF I>SZ THEN 1720
- 1650 PRINT "[147]*** [199]EBEN [211]IE JETZT EIN, OB EIN [198]ILE"
- 1660 PRINT " AUTOMATISCH GESTARTET WERDEN SOLL !"
- 1670 PRINT "[211]ATZ :";I;""
- 1680 FOR J=1 TO ZT%(I,0):PRINT J;". [198]ILE : ";N$(ZT%(I,J))
- 1690 S=0:INPUT "==> [193]UTOSTART (J/N) ";A$:IF A$="J" THEN S=1
- 1700 SA%(I,J)=S:NEXT J:I=I+1:GOTO 1640
- 1710 REM *** SATZKONTROLLE
- 1720 C=32
- 1730 GOSUB 2840:PRINT:I=1
- 1740 IF I>SZ THEN 1830
- 1750 PRINT "";RIGHT$(STR$(I),1);"[146] ";:S=2
- 1760 FOR J=1 TO ZT%(I,0)
- 1770 D=LEN(N$(ZT%(I,J)))+1
- 1780 IF S+D>38 THEN PRINT:PRINT " ";:S=2
- 1790 IF SA%(I,J) THEN PRINT "";
- 1800 PRINT N$(ZT%(I,J));"[146] ";:S=S+D
- 1810 NEXT J:PRINT:IF C=32 THEN PRINT
- 1820 I=I+1:GOTO 1740
- 1830 IF PEEK(214)<23 THEN 1850
- 1840 IF C=32 THEN C=44:GOTO 1730
- 1850 POKE 13041,C:GOSUB 2730:GOSUB 2840
- 1860 FOR I=1 TO FZ:PRINT "";RIGHT$(STR$(I),1);"[146] ";N$(I):NEXT I
- 1870 INPUT "==> [193]LLES [207]K (J/N) ";A$:IF A$<>"J" THEN 1230
- 1880 REM *** ULTRAMENUE GENERIEREN
- 1890 PRINT "[147] *** [213]LTRAMENUE WIRD ERZEUGT ."
- 1900 OF=12800-2049:FOR I=1 TO FZ:FOR J=1 TO LEN(N$(I))
- 1910 POKE AD,ASC(MID$(N$(I),J,1)):AD=AD+1:NEXT J:POKE AD,0:AD=AD+1:NEXT I
- 1920 E1=AD-OF:FOR I=1 TO FZ:POKE AD,LEN(N$(I))+1:AD=AD+1:NEXT I
- 1930 POKE AD,0:AD=AD+1:E2=AD-OF:S=-1:N$(0)=""
- 1940 FOR I=0 TO FZ-1:S=S+LEN(N$(I))+1:POKE AD,S:AD=AD+1:NEXT I
- 1950 E3=AD-OF:I=1
- 1960 IF I>SZ THEN 2020
- 1970 FOR J=1 TO ZT%(I,0):E=ZT%(I,J)
- 1980 IF SA%(I,J) THEN E=E+16
- 1990 IF J=ZT%(I,0) THEN E=E+128
- 2000 POKE AD,E:AD=AD+1:NEXT J
- 2010 I=I+1:GOTO 1960
- 2020 POKE AD,0:AD=AD+1:E4=AD-OF
- 2030 S=0:I=0:ZT%(0,0)=0
- 2040 IF I=SZ THEN 2060
- 2050 S=S+ZT%(I,0):POKE AD,S:AD=AD+1:I=I+1:GOTO 2040
- 2060 E5=AD-OF:FOR I=1 TO FZ
- 2070 POKE AD+FZ*2+I-1,SB(I)-256*INT(SB(I)/256):POKE AD+FZ*3+I-1,INT(SB(I)/256)
- 2080 NEXT I:AD=AD+6*FZ
- 2090 POKE 12825,E3-256*INT(E3/256):POKE 12826,INT(E3/256)
- 2100 POKE 12842,PEEK(12825):POKE 12843,PEEK(12826)
- 2110 POKE 12858,E4-256*INT((E4-1)/256)-1:POKE 12859,INT((E4-1)/256)
- 2120 POKE 12865,E3-256*INT((E3-1)/256)-1:POKE 12866,INT((E3-1)/256)
- 2130 POKE 12947,E1-1-256*INT((E1-1)/256):POKE 12948,INT((E1-1)/256)
- 2140 POKE 13142,PEEK(12947):POKE 13143,PEEK(12948)
- 2150 POKE 13164,E2-1-256*INT((E2-1)/256):POKE 13165,INT((E2-1)/256):E4=88-6*FZ
- 2160 POKE 13219,E4:POKE 13224,E4+FZ:FOR I=2 TO 5:POKE 13217+6*I,I*FZ+E4:NEXT
- 2170 POKE 13477,6*FZ-1:POKE 13478,E5-256*INT(E5/256):POKE 13479,INT(E5/256)
- 2180 POKE 13480,E4+1
- 2190 REM *** FILES LESEN
- 2200 OPEN 15,8,15
- 2210 PRINT " *** [196]IE [198]ILES WERDEN GELESEN ."
- 2220 LE(0)=AD-12800:GOSUB 2810:BL(0)=BZ
- 2230 FOR I=1 TO FZ:PRINT " [198]ILE";I;": ";N$(I):GOSUB 2720
- 2240 OPEN 1,8,0,N$(I):GOSUB 2760:IF E THEN CLOSE 1:GOTO 2240
- 2250 GET#1,A$:IF A$="" THEN A$=CHR$(0)
- 2260 POKE E5+OF+I-1,ASC(A$)
- 2270 GET#1,A$:IF A$="" THEN A$=CHR$(0)
- 2280 POKE E5+OF+FZ+I-1,ASC(A$)
- 2290 POKE 174,AD-256*INT(AD/256):POKE 175,INT(AD/256):E1=AD:E2=BZ
- 2300 SYS 53048:CLOSE 1:AD=PEEK(174)+256*PEEK(175)
- 2310 LE(I)=AD-E1:E1=AD:GOSUB 2810:BL(I)=BZ-E2
- 2320 IF BZ>104 THEN PRINT "??? [218]U VIELE [194]LOECKE !":STOP
- 2330 NEXT I
- 2340 REM *** BLOECKE BERECHNEN
- 2350 PRINT " *** [194]ERECHNUNG DER [194]LOECKE"
- 2360 SD=5:GS=17
- 2370 IF BZ>84 THEN GS=18:SD=5
- 2380 IF BZ>89 THEN GS=19:SD=5
- 2390 IF BZ>94 THEN GS=21:SD=6
- 2400 T=36:S=SD+1:M%(1,0)=1:M%(1,SD+1)=1
- 2410 FOR I=0 TO FZ-1:FOR J=1 TO BL(I)
- 2420 S=S+SD:C=GS
- 2430 S=S+1:IF S>=GS THEN S=S-GS
- 2440 IF M%(T-35,S)=0 THEN 2470
- 2450 C=C-1:IF C>0 THEN 2430
- 2460 T=T+1:GOTO 2440
- 2470 M%(T-35,S)=1:NEXT J
- 2480 POKE E5+OF+4*FZ+I,T:POKE E5+OF+5*FZ+I,S:NEXT I
- 2490 REM *** DATENFILE ERZEUGEN
- 2500 PRINT " *** [213]LTRABOOT [205]ENUE SCHREIBEN"
- 2510 PRINT "==> [199]EBEN [211]IE JETZT DEN [206]AMEN EIN !":INPUT " [206]AME ";B$
- 2520 GOSUB 2720:PRINT " *** [196]AS [196]ATENFILE WIRD ERZEUGT ."
- 2530 OPEN 2,8,2,B$+"+,S,W":GOSUB 2760:IF E THEN CLOSE 2:GOTO 2530
- 2540 S=0:FOR I=0 TO FZ-1
- 2550 S=S+BL(I):PRINT#2,S:PRINT#2,ABS(LE(I)-1-254*INT(LE(I)/254)):NEXT I
- 2560 PRINT#2,999:PRINT#2,0:CLOSE 2
- 2570 REM *** ULTRAMENUE SCHREIBEN
- 2580 PRINT " *** [213]LTRABOOT [205]ENUE WIRD GESCHRIEBEN ."
- 2590 OPEN 1,8,1,B$:GOSUB 2760:IF E THEN CLOSE 1:GOTO 2590
- 2600 PRINT#1,CHR$(1)+CHR$(8);
- 2610 POKE 174,0:POKE 175,50:POKE 172,E1-256*INT(E1/256):POKE 173,INT(E1/256)
- 2620 SYS 53073:CLOSE 1:CLOSE 15
- 2630 PRINT "'";B$;"' STEHT AUF DER [196]ISKETTE ."
- 2640 PRINT "[197]S MUSS JETZT MIT DEM MODIFIZIERTEN"
- 2650 PRINT "[213]LTRABOOT [205]AKER AUF DIE [218]IELDISKETTE"
- 2660 PRINT "GESCHRIEBEN WERDEN ."
- 2670 INPUT "==> [206]OCH EIN [213]LTRAMENUE-[198]ILE (J/N) ";A$:IF A$="J" THEN 1230
- 2680 END
- 2690 REM *** AUSGABE DER FILENAMEN
- 2700 PRINT "[198]ILES :"
- 2710 FOR I=1 TO FZ:PRINT "[198]ILE [206]R.";I;" : ";N$(I):NEXT I:PRINT:RETURN
- 2720 PRINT "==> ENTSPRECHENDE [196]ISKETTE EINLEGEN !"
- 2730 GET A$:IF A$="" THEN 2730
- 2740 RETURN
- 2750 REM *** DISKSTATUS TESTEN
- 2760 INPUT#15,E,E$,ET,ES:IF E=0 THEN RETURN
- 2770 PRINT "??? [196]ISK-[198]EHLER !":PRINT E;E$;ET;ES
- 2780 INPUT "==> [206]OCH EINMAL VERSUCHEN (J/N) ";A$:IF A$="J" THEN RETURN
- 2790 STOP
- 2800 REM *** AD AUF NAECHSTEN BLOCK
- 2810 BY=(AD-12800)-254*INT((AD-12800)/254):IF BY<>0 THEN AD=AD+254-BY
- 2820 BZ=INT((AD-12800)/254):RETURN
- 2830 REM *** KOPFZEILE SCHREIBEN
- 2840 PRINT "[147]*** [213]LTRABOOT [205]ENUE *** [205]ARTIN [208]FOST"
- 2850 PRINT " (C) 1992 [200]EUREKA [212]EACHWARE":PRINT "0[146] [198]ILE [211]ELECT":RETURN
- 2860 REM *** LOADSAVEDIRROUTINEN
- 2870 DATA162,1,32,198,255,32,207,255,32,207,255,169,13,32,210,255,32,207,255
- 2880 DATA133,255,32,207,255,5,255,208,3,76,204,255,32,207,255,170,32,207,255
- 2890 DATA32,205,189,169,32,32,210,255,32,207,255,240,216,32,210,255,144,246
- 2900 DATA162,1,32,198,255,160,0,32,207,255,145,174,230,174,208,2,230,175,166
- 2910 DATA144,240,241,76,204,255,198,1,162,1,32,201,255,160,0,177,174,32,210
- 2920 DATA255,230,174,208,2,230,175,165,174,197,172,208,239,165,175,197,173
- 2930 DATA208,233,230,1,76,204,255
- 2940 REM *** ULTRAMENUE
- 2950 DATA12,8,194,7,158,32,50,48,54,50,0,0,0,169,14,141,32,208,141,33,208
- 2960 DATA32,230,8,188,3,11,240,18,32,242,8,152,72,32,75,9,232,104,48,239,188
- 2970 DATA3,11,76,33,8,32,23,9,176,55,240,75,41,15,168,190,11,11,160,255,232
- 2980 DATA200,189,2,11,153,247,2,16,246,32,19,9,162,29,160,4,189,166,10,153
- 2990 DATA167,0,202,136,16,246,168,177,168,145,170,136,16,249,138,16,233,76
- 3000 DATA75,3,88,76,176,2,76,19,9,166,168,240,249,32,222,8,166,168,189,246
- 3010 DATA2,9,128,157,246,2,48,199,32,230,8,134,168,232,32,245,8,138,168,169
- 3020 DATA0,32,82,9,232,189,247,10,208,240,32,15,9,56,32,240,255,134,170,132
- 3030 DATA171,166,170,164,171,24,32,240,255,32,23,9,176,191,240,208,72,32,19
- 3040 DATA9,32,19,9,32,10,9,104,166,168,224,9,176,224,232,157,246,2,134,168
- 3050 DATA72,202,240,3,32,222,8,104,32,75,9,56,32,240,255,134,172,132,173,16
- 3060 DATA197,166,172,164,173,24,76,240,255,169,52,160,10,32,30,171,162,0,134
- 3070 DATA167,96,32,15,9,32,15,9,230,167,165,167,9,48,133,199,32,210,255,169
- 3080 DATA0,133,199,96,230,169,169,32,76,210,255,169,0,133,169,169,13,208,245
- 3090 DATA169,151,160,10,32,30,171,32,228,255,133,204,201,13,240,23,201,33
- 3100 DATA144,243,201,58,176,239,168,41,15,197,167,240,2,176,230,152,41,31
- 3110 DATA73,16,24,170,160,0,132,207,164,211,169,32,145,209,138,96,72,41,15
- 3120 DATA168,104,41,16,72,32,8,9,185,247,10,101,169,133,169,201,39,144,8,32
- 3130 DATA15,9,32,8,9,144,234,104,133,199,185,253,10,168,185,196,10,240,6,32
- 3140 DATA210,255,200,208,245,76,3,9,77,45,69,5,2,169,0,141,255,3,169,0,141
- 3150 DATA254,3,169,1,141,120,3,76,17,3,160,176,173,247,2,16,3,140,68,3,72
- 3160 DATA41,15,168,185,33,2,133,45,185,38,2,133,46,185,43,2,141,236,2,185
- 3170 DATA48,2,141,237,2,185,53,2,141,58,3,185,58,2,141,63,3,173,17,208,41
- 3180 DATA239,141,17,208,169,8,32,177,255,169,111,32,147,255,162,233,189,75
- 3190 DATA2,32,168,255,232,208,247,32,174,255,169,0,32,113,168,76,174,167,238
- 3200 DATA78,3,165,45,133,174,165,46,133,175,173,17,208,9,16,141,17,208,162
- 3210 DATA3,32,85,228,174,237,2,208,5,169,2,141,237,2,104,10,41,32,208,7,138
- 3220 DATA240,4,144,110,176,15,176,10,169,75,141,2,3,169,3,141,3,3,32,0,0,32
- 3230 DATA119,166,32,215,170,108,0,3,9,14,146,147,31,42,42,42,32,117,76,84
- 3240 DATA82,65,66,79,79,84,32,109,69,78,85,69,32,42,42,42,32,32,32,32,109
- 3250 DATA65,82,84,73,78,32,112,70,79,83,84,13,32,32,32,32,32,32,40,67,41,32
- 3260 DATA49,57,56,54,32,104,69,85,82,69,75,65,32,116,69,65,67,72,87,65,82
- 3270 DATA69,13,13,18,48,146,32,102,73,76,69,83,32,65,85,83,83,85,67,72,69
- 3280 DATA78,0,13,13,105,72,82,69,32,119,65,72,76,32,58,32,0,31,14,11,34,2
- 3290 DATA3,104,8,250,3,78,229,9,168,2,102,126,9,52,3,95,84,3,155,3,7,210,252
- 3300 DATA90,3
-